home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / GRAPHICS.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  6.3 KB  |  230 lines

  1. 10  DEF FNA(X)=COS(360/N*X*Q)*R+SIRD:DEF FNB(X)=SIN(360/N*X*Q)*R+SORD:Q=0.017453:Z$="       ":E$="BRGEWMCE":P=1:C=1:SCREEN 1,0:KEY OFF:CLS:E=0:D=0:LOCATE 25,1:PRINT "C";:FER$="123456789":FREG$="CPMLDBNFSRQHTUXY*AZE"
  2. 20  EQ$="ABCDEFGHIJKLMNOPQRSTUVWXYZ,!.? |-0123456789":DIM ALPHEBET(43,15):FOR A=1 TO 43:FOR B=1 TO 15:READ ALPHEBET(A,B):NEXT:NEXT
  3. 30  COLOR 0,P
  4. 40  I$=INKEY$
  5. 50  IF I$="" THEN 40
  6. 60  IF INSTR(FER$,I$)<>0 THEN ON VAL(I$) GOTO 1260,1140,1300,1060,40,1100,1180,1020,1220
  7. 70  IF I$=CHR$(27) THEN GOSUB 1570:GOTO 40
  8. 80  KNK=INSTR(FREG$,I$):IF KNK=0 THEN 40
  9. 90  ON KNK GOTO 100,120,130,150,160,170,180,220,330,430,190,520,710,840,940,980,200,1750,2200,2260
  10. 100  C=C+1:IF C=4 THEN C=0
  11. 110  COLOR 0,0:LOCATE 25,1:PRINT MID$(E$,(P+1)*4-C,1);:COLOR 0,P:GOTO 40
  12. 120  P=ABS(P=0):GOTO 110
  13. 130  IF LIN=0 THEN PSET(E,D),1:LIN=1:SIRD=E:SORD=D:GOTO 40
  14. 140  IF LIN=1 THEN PSET(E,D),1:LIN=2:SARD=E:SERD=D:GOTO 40 ELSE GOTO 40
  15. 150  IF LIN=2 THEN LINE(SIRD,SORD)-(SARD,SERD),C:LIN=0:GOTO 40 ELSE GOTO 40
  16. 160  IF LIN=2 THEN CIRCLE(SIRD,SORD),INT(SQR((SIRD-SARD)^2+(SORD-SERD)^2)),C:LIN=0:PSET(SIRD,SORD),0:GOTO 40 ELSE GOTO 40
  17. 170  IF LIN=2 THEN LINE(SIRD,SORD)-(SARD,SERD),C,B:LIN=0:GOTO 40 ELSE GOTO 40
  18. 180  CLS:E=0:D=0:GOTO 40
  19. 190  CLS:SCREEN 0:WIDTH 80:END
  20. 200  GOSUB 1340:GOTO 40
  21. 210  IF I$=CHR$(27) THEN GOSUB 1570:GOTO 40 ELSE GOTO 40
  22. 220  I$=INKEY$
  23. 230  IF I$="" THEN 220
  24. 240  IF P=0 THEN 280
  25. 250  IF I$="C" THEN SD=1:GOTO 310
  26. 260  IF I$="M" THEN SD=2:GOTO 310
  27. 270  IF I$="W" THEN SD=3:GOTO 310 ELSE 40
  28. 280  IF I$="G" THEN SD=1:GOTO 310
  29. 290  IF I$="R" THEN SD=2:GOTO 310
  30. 300  IF I$="B" THEN SD=3:GOTO 310 ELSE 40
  31. 310  PAINT(E,D),SD,C
  32. 320  GOTO 40
  33. 330  I$=INKEY$:IF I$="" THEN 330 ELSE IF VAL(I$)<1 OR VAL(I$)>9 THEN BEEP:GOTO 40
  34. 340  FG$="B:DATA"+I$
  35. 350  CLOSE:OPEN FG$ FOR OUTPUT AS #1
  36. 360  FOR SD=0 TO 319:FOR SF=0 TO 199
  37. 370  SG=POINT(SD,SF)
  38. 380  IF SG=0 THEN 420
  39. 390  PRINT #1,SD
  40. 400  PRINT #1,SF
  41. 410  PRINT #1,SG
  42. 420  NEXT:NEXT:BEEP:GOTO 40
  43. 430  I$=INKEY$:IF I$="" THEN 430 ELSE IF VAL(I$)<1 OR VAL(I$)>9 THEN BEEP:GOTO 40
  44. 440  FG$="B:DATA"+I$
  45. 450  CLOSE:OPEN FG$ FOR INPUT AS #1:CLS
  46. 460  IF EOF(1) THEN 40
  47. 470  INPUT #1,SG
  48. 480  INPUT #1,SF
  49. 490  INPUT #1,SD
  50. 500  PSET(SG,SF),SD
  51. 510  GOTO 460
  52. 520  LPRINT "C=CHANGE COLOR"
  53. 530  LPRINT "P=CHANGE PALATTE"
  54. 540  LPRINT "M=MARK POINT(DO TWICE)"
  55. 550  LPRINT "L=DRAW LINE"
  56. 560  LPRINT "D=DRAW CIRCLE"
  57. 570  LPRINT "B=DRAW BOX"
  58. 580  LPRINT "N=NEW SCREEN"
  59. 590  LPRINT "F,C=FILL AREA,C=R,G,W,B,M,C"
  60. 600  LPRINT "S=STORE SCREEN"
  61. 610  LPRINT "R=READ SCREEN"
  62. 620  LPRINT "Q=QUIT"
  63. 630  LPRINT "H=HELP"
  64. 640  LPRINT "T,N=DRAW STAR,N=3-9(ODD)"
  65. 650  LPRINT "U,N=DRAW POLYGON,N=3-9"
  66. 660  LPRINT "X,N=CHANGE X COORDINATES"
  67. 670  LPRINT "Y,N=CHANGE Y COORDINATES"
  68. 680  LPRINT "*=PRINTER SCREEN DUMP TO FILE"
  69. 690  LPRINT "Esc=PRINTER SCREEN FILE DUMP TO PRINTER"
  70. 691  LPRINT "Z=SHIFT PICTURE DOWN"
  71. 692  LPRINT "E=CLEAR MARK POINTERS"
  72. 693  LPRINT "A=PRINT CHARACTER"
  73. 700  GOTO 40
  74. 710  IF LIN<2 THEN 40
  75. 720  N=0
  76. 730  I$=INKEY$
  77. 740  IF I$="" THEN 730
  78. 750  IF I$=CHR$(13) THEN 780
  79. 760  N=N*10+VAL(I$)
  80. 770  GOTO 730
  81. 780  IF N/2=INT(N/2) THEN BEEP:GOTO 40
  82. 790  IF N<1 OR INT(N/2)=N/2 THEN 40
  83. 800  R=SQR((SERD-SORD)^2+(SARD-SIRD)^2)
  84. 810  K=(N+1)/2
  85. 820  FOR O=1 TO N:LINE(FNA(O),FNB(O))-(FNA(K),FNB(K)),C:IF O=(N+1)/2 THEN LIN=0:GOTO 40
  86. 830  LINE(FNA(O),FNB(O))-(FNA(K+1),FNB(K+1)),C:K=K+1:K=K*ABS(K<=N)+ABS(K>N):NEXT
  87. 840  IF LIN<2 THEN 40
  88. 850  N=0
  89. 860  I$=INKEY$
  90. 870  IF I$="" THEN 860
  91. 880  IF I$=CHR$(13) THEN 910
  92. 890  N=N*10+VAL(I$)
  93. 900  GOTO 860
  94. 910  IF N<2 THEN 40
  95. 920  R=SQR((SERD-SORD)^2+(SARD-SIRD)^2)
  96. 930  FOR O=1 TO N:LINE(FNA(O),FNB(O))-(FNA(O+1),FNB(O+1)),C:NEXT:LIN=0:GOTO 40
  97. 940  SD=0
  98. 950  I$=INKEY$:IF I$="" THEN 950
  99. 960  IF I$=CHR$(13) THEN E=SD:GOTO 40
  100. 970  SD=SD*10+VAL(I$):IF SD>319 THEN BEEP:GOTO 40 ELSE 950
  101. 980  SD=0
  102. 990  I$=INKEY$:IF I$="" THEN 990
  103. 1000  IF I$=CHR$(13) THEN D=SD:GOTO 40
  104. 1010  SD=SD*10+VAL(I$):IF SD>199 THEN BEEP:GOTO 40 ELSE 990
  105. 1020  IF D-1<0 THEN BEEP:GOTO 40 ELSE D=D-1
  106. 1030  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  107. 1040  PSET(E,D),C
  108. 1050  GOTO 40
  109. 1060  IF E-1<0 THEN BEEP:GOTO 40 ELSE E=E-1
  110. 1070  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  111. 1080  PSET(E,D),C
  112. 1090  GOTO 40
  113. 1100  IF E+1>319 THEN BEEP:GOTO 40 ELSE E=E+1
  114. 1110  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  115. 1120  PSET(E,D),C
  116. 1130  GOTO 40
  117. 1140  IF D+1>199 THEN BEEP:GOTO 40 ELSE D=D+1
  118. 1150  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  119. 1160  PSET(E,D),C
  120. 1170  GOTO 40
  121. 1180  IF D-1<0 OR E-1<0 THEN BEEP:GOTO 40 ELSE D=D-1:E=E-1
  122. 1190  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  123. 1200  PSET(E,D),C
  124. 1210  GOTO 40
  125. 1220  IF D-1<0 OR E+1>319 THEN BEEP:GOTO 40 ELSE D=D-1:E=E+1
  126. 1230  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  127. 1240  PSET(E,D),C
  128. 1250  GOTO 40
  129. 1260  IF D+1>199 OR E-1<0 THEN BEEP:GOTO 40 ELSE D=D+1:E=E-1
  130. 1270  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  131. 1280  PSET(E,D),C
  132. 1290  GOTO 40
  133. 1300  IF D+1>199 OR E+1>319 THEN BEEP:GOTO 40 ELSE D=D+1:E=E+1
  134. 1310  IF C=0 THEN PSET(E,D),1:FOR SD=1 TO 25:NEXT
  135. 1320  PSET(E,D),C
  136. 1330  GOTO 40
  137. 1340  FERT$="FILE":FOR DFD=1 TO 4
  138. 1350  I$=INKEY$:IF I$="" THEN 1350
  139. 1360  IF I$=CHR$(13) THEN 1380
  140. 1370  FERT$=FERT$+I$:NEXT DFD
  141. 1380  CLOSE:OPEN FERT$ FOR OUTPUT AS #1
  142. 1390  FOR CCC=0 TO 196 STEP 7
  143. 1400  FOR AAA=0 TO 319
  144. 1410  AAX=-1
  145. 1420  AAZ=0
  146. 1430  FOR BBB=CCC TO CCC+6
  147. 1440  IF BBB>199 THEN AAV=0:GOTO 1480
  148. 1450  AAV=POINT(AAA,BBB)
  149. 1460  IF AAV>1 THEN AAV=1
  150. 1470  IF AAV<0 THEN BEEP:RETURN
  151. 1480  AAX=AAX+1
  152. 1490  AAZ=AAZ+AAV*2^AAX
  153. 1500  NEXT BBB
  154. 1510  IF AAZ=13 THEN AAZ=12
  155. 1520  PRINT #1,AAZ
  156. 1530  NEXT AAA
  157. 1540  NEXT CCC
  158. 1550  CLOSE
  159. 1560  RETURN
  160. 1570  FERT$="FILE":FOR DFD=1 TO 4
  161. 1580  I$=INKEY$:IF I$="" THEN 1580
  162. 1590  IF I$=CHR$(13) THEN 1610
  163. 1600  FERT$=FERT$+I$:NEXT DFD
  164. 1610  CLOSE:OPEN FERT$ FOR INPUT AS #1
  165. 1620  WIDTH "LPT1:",255
  166. 1630  LPRINT CHR$(28);
  167. 1640  LPRINT CHR$(3);
  168. 1650  FOR CCC=0 TO 196 STEP 7
  169. 1660  FOR DDD=1 TO 128:LPRINT CHR$(0);:NEXT
  170. 1670  FOR AAA=0 TO 319
  171. 1680  INPUT #1,AAZ
  172. 1690  IF AAZ=3 THEN LPRINT CHR$(3);CHR$(3); ELSE LPRINT CHR$(AAZ);
  173. 1700  NEXT
  174. 1710  LPRINT CHR$(3);CHR$(14);
  175. 1720  NEXT
  176. 1730  LPRINT CHR$(3);CHR$(2);
  177. 1740  CLOSE:RETURN
  178. 1750  I$=INKEY$:IF I$="" THEN 1750 ELSE I=INSTR(EQ$,I$):IF I=0 THEN 40
  179. 1760  FOR J=1 TO 5:FOR K=1 TO 3:PSET(E+K,D+J),C*(ALPHEBET(I,(J-1)*3+K)):NEXT:NEXT:IF E+4>319 THEN GOTO 40 ELSE E=E+4:GOTO 40
  180. 1770  DATA 1,1,1,1,0,1,1,1,1,1,0,1,1,0,1
  181. 1780  DATA 1,1,1,1,0,1,1,1,0,1,0,1,1,1,1
  182. 1790  DATA 1,1,1,1,0,0,1,0,0,1,0,0,1,1,1
  183. 1800  DATA 1,1,0,1,0,1,1,0,1,1,0,1,1,1,0
  184. 1810  DATA 1,1,1,1,0,0,1,1,0,1,0,0,1,1,1
  185. 1820  DATA 1,1,1,1,0,0,1,1,0,1,0,0,1,0,0
  186. 1830  DATA 1,1,1,1,0,0,1,0,1,1,0,1,1,1,1
  187. 1840  DATA 1,0,1,1,0,1,1,1,1,1,0,1,1,0,1
  188. 1850  DATA 1,1,1,0,1,0,0,1,0,0,1,0,1,1,1
  189. 1860  DATA 0,0,1,0,0,1,0,0,1,1,0,1,1,1,1
  190. 1870  DATA 1,0,1,1,0,1,1,1,0,1,0,1,1,0,1
  191. 1880  DATA 1,0,0,1,0,0,1,0,0,1,0,0,1,1,1
  192. 1890  DATA 1,0,1,1,1,1,1,0,1,1,0,1,1,0,1
  193. 1900  DATA 1,0,1,1,1,1,1,1,1,1,1,1,1,0,1
  194. 1910  DATA 1,1,1,1,0,1,1,0,1,1,0,1,1,1,1
  195. 1920  DATA 1,1,1,1,0,1,1,1,1,1,0,0,1,0,0
  196. 1930  DATA 1,1,1,1,0,1,1,0,1,1,1,1,0,0,1
  197. 1940  DATA 1,1,1,1,0,1,1,1,0,1,0,1,1,0,1
  198. 1950  DATA 1,1,1,1,0,0,1,1,1,0,0,1,1,1,1
  199. 1960  DATA 1,1,1,0,1,0,0,1,0,0,1,0,0,1,0
  200. 1970  DATA 1,0,1,1,0,1,1,0,1,1,0,1,1,1,1
  201. 1980  DATA 1,0,1,1,0,1,1,0,1,1,0,1,0,1,0
  202. 1990  DATA 1,0,1,1,0,1,1,0,1,1,1,1,1,0,1
  203. 2000  DATA 1,0,1,0,1,0,0,1,0,0,1,0,1,0,1
  204. 2010  DATA 1,0,1,0,1,0,0,1,0,0,1,0,0,1,0
  205. 2020  DATA 1,1,1,0,0,1,0,1,0,1,0,0,1,1,1
  206. 2030  DATA 0,0,0,0,0,0,0,1,0,0,1,0,1,0,0
  207. 2040  DATA 0,1,0,0,1,0,0,1,0,0,0,0,0,1,0
  208. 2050  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0
  209. 2060  DATA 1,1,1,0,0,1,0,1,0,0,0,0,0,1,0
  210. 2070  DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  211. 2080  DATA 0,1,0,0,1,0,0,1,0,0,1,0,0,1,0
  212. 2090  DATA 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0
  213. 2100  DATA 1,1,1,1,0,1,1,0,1,1,0,1,1,1,1
  214. 2110  DATA 0,1,0,1,1,0,0,1,0,0,1,0,1,1,1
  215. 2120  DATA 0,1,0,1,0,1,0,0,1,0,1,0,1,1,1
  216. 2130  DATA 1,1,1,0,0,1,0,1,1,0,0,1,1,1,1
  217. 2140  DATA 1,0,1,1,0,1,1,1,1,0,0,1,0,0,1
  218. 2150  DATA 1,1,1,1,0,0,1,1,1,0,0,1,1,1,1
  219. 2160  DATA 1,0,0,1,0,0,1,1,1,1,0,1,1,1,1
  220. 2170  DATA 1,1,1,0,0,1,0,0,1,0,0,1,0,0,1
  221. 2180  DATA 1,1,1,1,0,1,1,1,1,1,0,1,1,1,1
  222. 2190  DATA 1,1,1,1,0,1,1,1,1,0,0,1,0,0,1
  223. 2200  IF LIN<>2 THEN 40
  224. 2210  FOR JN=SERD TO SORD STEP -1
  225. 2220  FOR JM=SIRD TO SARD
  226. 2230  VRF=POINT(JM,JN)
  227. 2240  PSET(JM,JN+1),VRF
  228. 2250  NEXT:NEXT:SERD=SERD+1:GOTO 40
  229. 2260  LIN=0:GOTO 40
  230.